package com.sg.model.app.po;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serial;
import lombok.experimental.Accessors;

import jakarta.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;

/**
 * @author ：CHS
 * @since 2025/5/25 10:22
 *
 *
 * @version 1.0
 */
@Data
@Accessors(chain = true)
@TableName("oms_bill")   //7-1-02账单表
public class OmsAccountPlanBill implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;
    
    
    /**
     * 规划费用账单ID 
     */
    @TableId(value = "plan_bill_id", type = IdType.ASSIGN_UUID)
		@NotNull(message = "planBillId不能为空")
    private String	 planBillId;
    /**
     * 规划账户ID 
     */
    @TableField(value = "plan_account_id")
		@NotNull(message = "规划账户ID不能为空")
		@Schema(description = "规划账户ID")
    private String	 planAccountId;
    /**
     * 收支类型 INCOME:收入 SPENDING:支出
     */
    @TableField(value = "amount_type")
		@NotNull(message = "收支类型不能为空")
		@Schema(description = "收支类型")
    private String	 amountType;
    /**
     * 规划账单类型 INCREASE_BUDGET:增加预算 ACTUAL_EXPENDITURES:实际支出 ACTUAL_ACCOUNT:实际到账 REDUCE_BUDGET:减少预算
     */
    @TableField(value = "plan_bill_type")
		@NotNull(message = "规划账单类型不能为空")
		@Schema(description = "规划账单类型")
    private String	 planBillType;
    /**
     * 费用业务子类型 PC:PC端 APP:APP MINI_APPLET:小程序
     */
    @TableField(value = "cost_business_sub_type")
		@Schema(description = "费用业务子类型")
    private String	 costBusinessSubType;
    /**
     * 账单单号 
     */
    @TableField(value = "bill_number")
		@NotNull(message = "账单单号不能为空")
		@Schema(description = "账单单号")
    private String	 billNumber;
    /**
     * 发生金额 
     */
    @TableField(value = "actual_amount")
		@NotNull(message = "发生金额不能为空")
		@Schema(description = "发生金额")
    private Double	 actualAmount;
    /**
     * 操作人就职记录ID 
     */
    @TableField(value = "operation_induction_id")
		@NotNull(message = "操作人就职记录ID不能为空")
		@Schema(description = "操作人就职记录ID")
    private String	 operationInductionId;
    /**
     * 创建人就职记录ID 
     */
    @TableField(value = "create_induction_id")
		@NotNull(message = "创建人就职记录ID 不能为空")
		@Schema(description = "创建人就职记录ID ")
    private String	 createInductionId;
    /**
     * 操作时间 
     */
    @TableField(value = "operate_time")
		@NotNull(message = "操作时间不能为空")
		@Schema(description = "操作时间")
    private Date	 operateTime;
    /**
     * 创建时间 
     */
    @TableField(value = "create_time")
		@NotNull(message = "创建时间不能为空")
		@Schema(description = "创建时间")
    private Date	 createTime;
    /**
     * 是否作废 TRUE:是 FALSE:否
     */
    @TableField(value = "is_valid")
		@NotNull(message = "是否作废不能为空")
		@Schema(description = "是否作废")
    private String	 isValid;
    /**
     * 创建于空间ID 
     */
    @TableField(value = "space_id")
		@NotNull(message = "创建于空间ID不能为空")
		@Schema(description = "创建于空间ID")
    private String	 spaceId;
    /**
     * 创建于联盟应用ID 
     */
    @TableField(value = "app_id")
		@NotNull(message = "创建于联盟应用ID不能为空")
		@Schema(description = "创建于联盟应用ID")
    private String	 appId;
}
